package org.example.utils;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.UUID;
import java.io.IOException;

@Component
@Slf4j
public class FileUtil {
    public static boolean checkImageSuffix(String imgPath) {
        Boolean flag =false;
        //图片格式
        String[] FILETYPES = new String[]{
                ".jpg", ".bmp", ".jpeg", ".png", ".gif",
                ".JPG", ".BMP", ".JPEG", ".PNG", ".GIF"
        };
        if(!StringUtils.isBlank(imgPath)){
            for (int i = 0; i < FILETYPES.length; i++) {
                String fileType = FILETYPES[i];
                if (imgPath.endsWith(fileType)) {
                    flag = true;
                    break;
                }
            }
        }

        return flag;
    }

    /**
     * 上传图片
     * @param file 图片文件
     * @param path 图片文件保存路径
     * @param fileNameNew 保存的文件名字，无后缀名，通过传进来的文件判断文件格式
     * @return
     */
    public static boolean uploadImage(MultipartFile file,String path,String fileNameNew){
        String suffixName = fileNameNew.substring(fileNameNew.lastIndexOf("."));
        log.info("重命名后的文件名为：" + fileNameNew );
        //判断图片文件后缀
        if (!checkImageSuffix(suffixName)) {
            log.warn("文件格式必须为图片");
            return false;
        }

        File fileTemObj = new File(path + File.separator + fileNameNew);
        //判断目录是否存在
        if(!fileTemObj.getParentFile().exists()){
            fileTemObj.getParentFile().mkdirs();
        }
        //判断是否有同名的文件存在
//        if(fileTemObj.exists()){
//            return ResponseResult.failed("文件已经存在");
//        }
        try {
            file.transferTo(fileTemObj);
        } catch (IOException e) {
            e.printStackTrace();
            log.warn("文件上传失败");
            return false;
        }

        return true;
    }

    /**
     * 删除文件
     * @param path 文件路径
     * @param fileNameOld 文件名，包含后缀
     * @return
     */
    public static int deleteFile(String path, String fileNameOld) {
        int resultInfo;
        path = path + File.separator + fileNameOld;
        File file = new File(path);
        log.info("{}{}",path,file.exists());
        if (file.exists()) {//文件是否存在
            if (file.delete()) {//存在就删了，返回1
                resultInfo =  1;
            } else {
                resultInfo =  0;
            }
        } else {
            resultInfo = -1;
        }
        return resultInfo;
    }

}
